package com.yztctech.a25_02_intentservice;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

/**
 * IntentService:startService启动自定义IntentService实现异步方法执行耗时操作;
 *     继承于Service，内部封装了一个异步的方法。一旦有任务发送过来，该方法就会执行。
 *     当该任务执行完毕后，如果有新任务到来就执行新任务，否则，就会停止Service。
 *
 * 1、自定义Service，继承IntentService,在清单文件中注册
 *    实现异步方法onHandleIntent，和构造方法
 * 2、自定义无参构造方法，手动调用父类有参的构造方法;?构造方法没有用
 * 3、通过startService下达任务，Service中的onHandleIntent触发。
 *    onHandleIntent是运行在异步线程中的，可以执行耗时操作
 *    当该任务执行完毕后，如果有新任务到来就执行新任务，否则，就会停止Service。
 *
 *
 *    需要注意：同时只能执行1个任务，其他任务等待
 * 4、备注：可以下载apk，如果要通过ui显式下载进度呢？这里就要引出bindService启动方式了
 */
public class MainActivity extends AppCompatActivity {

    private Button downloadBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        downloadBtn = (Button) findViewById(R.id.btn_download);
        downloadBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, DownloadService.class);//显示启动
                intent.putExtra("key_url", "http://www.www.www");
                startService(intent);
            }
        });
    }
}
